package com.sky.dto;
/**
 * 1. 当前模块名：sky-pojo
 *    模块作用：子模块，存放实体类（Entity）、视图对象（VO）、数据传输对象（DTO）等
 * 2. 当前包名：com.sky.dto
 *    包作用：存放 DTO（Data Transfer Object），用于系统各层之间传递数据，解耦实体类
 * 3. 当前类名：DishDTO
 *    类作用：封装菜品的相关信息，包括基础信息（名称、分类、价格等）以及口味列表。
 */
import com.sky.entity.DishFlavor;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
 * DishDTO：菜品数据传输对象
 * 知识点说明：
 * 1. @Data：Lombok 注解，自动生成 getter、setter、toString、equals、hashCode 方法。
 * 2. 实现 Serializable 接口：便于对象在网络传输、缓存存储中进行序列化和反序列化。
 * 3. BigDecimal：用于存储价格信息，避免浮点数运算误差。
 * 4. List<DishFlavor>：封装菜品的多个口味选项（如微辣、中辣等），由另一实体类 DishFlavor 定义。
 * 5. new ArrayList<>(): 初始化口味列表，避免空指针异常。
 */
@Data
public class DishDTO implements Serializable {

    private Long id;
    //菜品名称
    private String name;
    //菜品分类id
    private Long categoryId;
    //菜品价格
    private BigDecimal price;
    //图片
    private String image;
    //描述信息
    private String description;
    //0 停售 1 起售
    private Integer status;
    //口味
    private List<DishFlavor> flavors = new ArrayList<>();

}
/**
 * 仿写：
 * SetmealDTO：套餐数据传输对象
 * 用于封装套餐的基础信息和包含的菜品列表
 * @Data
 * public class SetmealDTO implements Serializable {
 *     // 套餐 ID
 *     private Long id;
 *     // 套餐名称
 *     private String name;
 *     // 套餐分类 ID
 *     private Long categoryId;
 *     // 套餐价格
 *     private BigDecimal price;
 *     // 套餐图片
 *     private String image;
 *     // 套餐描述
 *     private String description;
 *     // 套餐状态：0停售 1起售
 *     private Integer status;
 *     // 套餐包含的菜品 ID 列表
 *     private List<Long> dishIds = new ArrayList<>();
 * }
 */